#include <bits/stdc++.h>
/*
给定一个包含红色、白色和蓝色，一共 n 个元素的数组，原地对它们进行排序，使得相同颜色的元素相邻，并按照红色、白色、蓝色顺序排列。

此题中，我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。

输入: [2,0,2,1,1,0]
输出: [0,0,1,1,2,2]

思路：双指针（改写数组）  + index（遍历数组）
arr[index]==0 和arr[left]换肯定没问题
arr[index]==2 和arr[right]换肯定没问题
arr[index]==1 不用理会，因为0,2都已经归位了

input: 数组
output：仍是数组（原地）
*/
using namespace std;
void swap(int a[],int i1,int i2){
  int temp = a[i1];
  a[i1] = a[i2];
  a[i2] = temp;
}
int main() {
  freopen("data.txt","r",stdin);
  int arr[1000];
  int len = 0;
  while(scanf("%d",&arr[len])==1){
    len++;
  //  cout<<len<<endl;
  }
 
  //[0,len]就是所有数字
  int right = len,left = 0;
  int index = left;
  for(;index<=right;index++){
    if (arr[index]==0){
      swap(arr,index,left);
      left++;
    }
    else if (arr[index]==2){
      swap(arr,index,right);
      right--;
    }
    else {
      continue;
    }
  }


  for(int i=0;i<=len;i++)
    cout<<arr[i]<<" ";
  cout<<endl;

  return 0;
}